package practice.practice_0928;

import java.util.Arrays;

public class Solution {
    //数组nums包含从0到n的所有整数，但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗？
    //示例 1：
    //输入：[3,0,1]
    //输出：2
    public int missingNumber(int[] nums) {
        int sum1=0,sum2=0;
        for(int i=0;i<nums.length;i++){
            sum1+=nums[i];
        }
//        for(int i=0;i<=nums.length;i++){循环求和
//            sum2+=i;
//        }
        //公式求和
        sum2=(nums.length*(1+ nums.length))/2;
        return sum2-sum1;
    }
    public int missingNumber2(int[] nums) {//异或法
            int sum=0;
            for(int i=0;i<nums.length;i++){
                sum^=i;
                sum^=nums[i];
            }
            return sum^nums.length;
    }

}
class RotateArrays {//左旋数组[1,2,3,4,5]左旋两个[4,5,1,2,3]
public static void partRotate(int leftIndex,int rightIndex,int arr[]){//数组逆置
    while((rightIndex-leftIndex+1)>0){
        int tmp;
        tmp=arr[rightIndex];
        arr[rightIndex]=arr[leftIndex];
        arr[leftIndex]=tmp;
        rightIndex--;
        leftIndex++;
    }
}
    public static void rotate(int nums[],int k) {
        int n=nums.length;
        k=k%n;//k可能会大于数组长度
        //前n-k个数逆置
        partRotate(0,n-k-1,nums);
        partRotate(n-k,n-1,nums);
        partRotate(0,n-1,nums);

    }
}
